/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.mb;

import br.com.sgs.auxiliar.CampusAux;
import br.com.sgs.auxiliar.EnderecoAux;
import br.com.sgs.bundle.MessageBundleLoader;
import br.com.sgs.entity.Campus;
import br.com.sgs.fachada.CampusFachada;
import br.com.sgs.fachada.CampusIFachada;
import br.com.sgs.fachada.Fachada;
import br.com.sgs.fachada.IFachada;
import br.com.sgs.util.DataValue;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

        
             
        
                
/**
 *
 * @author Eric
 */
@ManagedBean(name="campusMB")
@ViewScoped
public class CampusMB implements Serializable {
    
    
    private List<Campus> lscampus = new ArrayList<Campus>();
    private List<String> lsstatus = new ArrayList<String>();
       
    //instituicao selecionada
    private Campus campusselecionado;
    
    //parametro de busca
    private String busca;
 
    //campos do visualizar
    private String strdescricao;
    private String strtelefone;
    private String strinstituicao;
    private Date strdtcriacao;
    private String strarea;
    private String strpais;
    private String strestado;
    private String strcidade;
    private String strrua;
    private String strnumero;
    private String strcep;
    private String strstatus;
    
    
    
    /**
     * Creates a new instance of InstituicaoNew
     */
    public CampusMB() {
    }
    
    @PostConstruct
    public void init() {
        try {

            CampusIFachada ifach = new CampusFachada();

            for (DataValue lsd : CampusAux.getStatusLista()) {
                this.getLsstatus().add(lsd.getValue());
            }

            lscampus = ifach.findCampusByAll("", null, null, lsstatus);


        } catch (Exception e) {
            System.err.println("Erro no init do campusMB");
        }
    }
        
    public void buscar() {
        try {
            
            System.out.println(lscampus.size());
            
            CampusIFachada ifach = new CampusFachada();
            lscampus = ifach.findCampusByAll(busca, null, null, lsstatus);

            
        } catch (Exception e) {
            System.err.println("Erron no método buscar");
            e.printStackTrace();
        }
    }
    
    public void visualizar(Campus c) {
        try {

            strinstituicao = c.getInstituicao().getNome();
            strdescricao = c.getDescricao();
            strstatus = MessageBundleLoader.getMessage(CampusAux.getStatusLabel(c.getStatus()));
            strdtcriacao = c.getDtcriacao();
            strtelefone = c.getTelefone();
            strnumero = c.getEndereco().getNumero();
            strrua = c.getEndereco().getRua();            
            strcidade = c.getEndereco().getCidade();
            strestado = c.getEndereco().getEstado();
            strpais = c.getEndereco().getPais();
            strcep = c.getEndereco().getCep();  
            


        } catch (Exception e) {
            System.err.println("Erro no visualizar");
        }
    }
    
    public void excluir() {
        try {

            IFachada ifach = new Fachada();

            Campus c = campusselecionado;

            c.setStatus(CampusAux.EXCLUIDO);
            c.getEndereco().setStatus(EnderecoAux.EXCLUIDO);
            ifach.alterar(c);

            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, MessageBundleLoader.getMessage("msgExcluidoSucesso"), ""));
            atualizarTabela();

        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, MessageBundleLoader.getMessage("msgexclusaoErro"), ""));
        }

    }

    public String editar() {
        try {
           return "CAMPUSEDIT";
        } catch (Exception e) {
           return null;
        }
    }
    
    public void atualizarTabela() {
        try {

            CampusIFachada ifach = new CampusFachada();
            lscampus = ifach.findCampusByAll("", null, null, lsstatus);

        } catch (Exception e) {
            System.err.println("Erro no metodo atualizarTabela");
        }
    }
    
    public void selecionarRegistro(Campus c) {
        try {

            campusselecionado = c;

        } catch (Exception e) {
            System.err.println("Erro no metodo selecionarRegistro");
        }

    }
    
    public String strStatusLabel(int st) {
        return MessageBundleLoader.getMessage(CampusAux.getStatusLabel(st));
    }
            
    /**
     * @return the lsstatus
     */
    public List<String> getLsstatus() {
        return lsstatus;
    }

    /**
     * @param lsstatus the lsstatus to set
     */
    public void setLsstatus(List<String> lsstatus) {
        this.lsstatus = lsstatus;
    }

    /**
     * @return the strstatus
     */
    public String getStrstatus() {
        return strstatus;
    }

    /**
     * @param strstatus the strstatus to set
     */
    public void setStrstatus(String strstatus) {
        this.strstatus = strstatus;
    }

    /**
     * @return the strdtcriacao
     */
    public Date getStrdtcriacao() {
        return strdtcriacao;
    }

    /**
     * @param strdtcriacao the strdtcriacao to set
     */
    public void setStrdtcriacao(Date strdtcriacao) {
        this.strdtcriacao = strdtcriacao;
    }

    /**
     * @return the busca
     */
    public String getBusca() {
        return busca;
    }

    /**
     * @param busca the busca to set
     */
    public void setBusca(String busca) {
        this.busca = busca;
    }

    /**
     * @return the strdescricao
     */
    public String getStrdescricao() {
        return strdescricao;
    }

    /**
     * @param strdescricao the strdescricao to set
     */
    public void setStrdescricao(String strdescricao) {
        this.strdescricao = strdescricao;
    }

    /**
     * @return the strtelefone
     */
    public String getStrtelefone() {
        return strtelefone;
    }

    /**
     * @param strtelefone the strtelefone to set
     */
    public void setStrtelefone(String strtelefone) {
        this.strtelefone = strtelefone;
    }

    /**
     * @return the lscampus
     */
    public List<Campus> getLscampus() {
        return lscampus;
    }

    /**
     * @param lscampus the lscampus to set
     */
    public void setLscampus(List<Campus> lscampus) {
        this.lscampus = lscampus;
    }

    /**
     * @return the campusselecionado
     */
    public Campus getCampusselecionado() {
        return campusselecionado;
    }

    /**
     * @param campusselecionado the campusselecionado to set
     */
    public void setCampusselecionado(Campus campusselecionado) {
        this.campusselecionado = campusselecionado;
    }

    /**
     * @return the strpais
     */
    public String getStrpais() {
        return strpais;
    }

    /**
     * @param strpais the strpais to set
     */
    public void setStrpais(String strpais) {
        this.strpais = strpais;
    }

    /**
     * @return the strestado
     */
    public String getStrestado() {
        return strestado;
    }

    /**
     * @param strestado the strestado to set
     */
    public void setStrestado(String strestado) {
        this.strestado = strestado;
    }

    /**
     * @return the strcidade
     */
    public String getStrcidade() {
        return strcidade;
    }

    /**
     * @param strcidade the strcidade to set
     */
    public void setStrcidade(String strcidade) {
        this.strcidade = strcidade;
    }

    /**
     * @return the strrua
     */
    public String getStrrua() {
        return strrua;
    }

    /**
     * @param strrua the strrua to set
     */
    public void setStrrua(String strrua) {
        this.strrua = strrua;
    }

    /**
     * @return the strnumero
     */
    public String getStrnumero() {
        return strnumero;
    }

    /**
     * @param strnumero the strnumero to set
     */
    public void setStrnumero(String strnumero) {
        this.strnumero = strnumero;
    }

    /**
     * @return the strcep
     */
    public String getStrcep() {
        return strcep;
    }

    /**
     * @param strcep the strcep to set
     */
    public void setStrcep(String strcep) {
        this.strcep = strcep;
    }

    /**
     * @return the strarea
     */
    public String getStrarea() {
        return strarea;
    }

    /**
     * @param strarea the strarea to set
     */
    public void setStrarea(String strarea) {
        this.strarea = strarea;
    }

    /**
     * @return the strinstituicao
     */
    public String getStrinstituicao() {
        return strinstituicao;
    }

    /**
     * @param strinstituicao the strinstituicao to set
     */
    public void setStrinstituicao(String strinstituicao) {
        this.strinstituicao = strinstituicao;
    }
     
}
